﻿--****En el servidor ASEREPLICADO****
--Creación de la base de datos
create database UNICEF_BDD


--Creación de las tablas que componen la vista ESTADO
create table ESTADO_TAB(
ID_ESTADO int,
NOMBRE_ESTADO  varchar(30))

create table ESTADO_TLAX(
ID_ESTADO int,
NOMBRE_ESTADO  varchar(30))

--Llaves primarias, foraneas y reglas de negocio
alter table ESTADO_TAB add primary key (ID_ESTADO)
alter table ESTADO_TLAX add primary key (ID_ESTADO)

alter table ESTADO_TAB add constraint nombre_tabasco check(Upper(NOMBRE_ESTADO) like upper('TABASCO'))
alter table ESTADO_TLAX add constraint nombre_tlaxcala check(Upper(NOMBRE_ESTADO) like upper('TLAXCALA'))

--Creación de procedimientos para insertar datos
CREATE PROCEDURE in_estadotab
@ID_ESTADO int,
@NOMBRE_ESTADO varchar(30)
AS
insert into ESTADO_TAB
values (@ID_ESTADO,@NOMBRE_ESTADO)


CREATE PROCEDURE in_estadotlax
@ID_ESTADO int,
@NOMBRE_ESTADO varchar(30)
AS
insert into ESTADO_TLAX
values (@ID_ESTADO,@NOMBRE_ESTADO)

--Definicion del procedimiento remoto
create existing table in_estadover
(
ID_ESTADO int,
NOMBRE_ESADO varchar(30)
)
external procedure at "BRAHM.UNICEF_BDD.dbo.in_estadover"

--Creación de proxy tables
create existing table ESTADO_VER
(
ID_ESTADO int,
NOMBRE_ESTADO varchar(30)
)external table at "BRAHM.UNICEF_BDD.dbo.ESTADO_VER"

--Creación de la vista ESTADOS
create view ESTADOS
as
(select * from ESTADO_VER)
union
(select * from ESTADO_TAB)
UNION
(select * from ESTADO_TLAX)

--Creación de procedimiento para insertar datos en la vista ESTADO
create procedure inserta_estado(@ID_ESTADO int,@NOMBRE_ESTADO varchar(30))
as
begin
IF (UPPER(@NOMBRE_ESTADO)=UPPER('VERACRUZ')) 
INSERT INTO ESTADO_VER(ID_ESTADO,NOMBRE_ESTADO) VALUES(@ID_ESTADO,@NOMBRE_ESTADO)
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TLAXCALA')) 
INSERT INTO ESTADO_TLAX(ID_ESTADO,NOMBRE_ESTADO) VALUES(@ID_ESTADO,@NOMBRE_ESTADO) 
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TABASCO')) 
INSERT INTO ESTADO_TAB(ID_ESTADO,NOMBRE_ESTADO) VALUES(@ID_ESTADO,@NOMBRE_ESTADO)
end;

--Creación del trigger para insertar datos en la vista ESTADOS
create trigger trgr_estados on ESTADOS
instead of insert as
declare @ID_ESTADO int
declare @NOMBRE_ESTADO varchaR(30)
begin
select @ID_ESTADO=ID_ESTADO,@NOMBRE_ESTADO=NOMBRE_ESTADO
from inserted
exec inserta_estado @ID_ESTADO,@NOMBRE_ESTADO
end






--Creación de las tablas que componen la vista ORFANATORIOS
create table ORF_TAB(
ID_ORFANATORIO int,
ID_ESTADO int,
NOMBRE_ORFANATORIO varchar(50),
DOM_ORFANATORIO varchar(50)
)

create table ORF_TLAX(
ID_ORFANATORIO int,
ID_ESTADO int,
NOMBRE_ORFANATORIO varchar(50),
DOM_ORFANATORIO varchar(50)
)

--Llaves primarias, foraneas y reglas de negocio
alter table ORF_TAB add primary key(ID_ORFANATORIO)
alter table ORF_TLAX add primary key(ID_ORFANATORIO)

alter table ORF_TAB add foreign key(ID_ESTADO) references ESTADO_TAB(ID_ESTADO)
alter table ORF_TLAX add foreign key(ID_ESTADO) references ESTADO_TLAX(ID_ESTADO)

--Creación de procedimientos almacenados para cada fragmento de la vista ORFANATORIOS
CREATE PROCEDURE in_orftab
@ID_ORFANATORIO int,
@ID_ESTADO int,
@NOMBRE_ORFANATORIO varchar(50),
@DOM_ORFANATORIO varchar(50)
AS
insert into ORF_TAB
values (@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)

CREATE PROCEDURE in_orftlax
@ID_ORFANATORIO int,
@ID_ESTADO int,
@NOMBRE_ORFANATORIO varchar(50),
@DOM_ORFANATORIO varchar(50)
AS
insert into ORF_TLAX
values (@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)

--Creación de procedimientos remotos para la vista ORFANATORIOS
create existing table in_orfver
(
ID_ORFANATORIO int,
ID_ESTADO int,
NOMBRE_ORFANATORIO varchar(50),
DOM_ORFANATORIO varchar(50)
)
external procedure at "BRAHM.UNICEF_BDD.dbo.in_orfver"


--Creación de las proxytables para la vista ORFANATORIOS

create existing table ORF_VER
(
ID_ORFANATORIO int,
ID_ESTADO int,
NOMBRE_ORFANATORIO varchar(50),
DOM_ORFANATORIO varchar(50)
)
external table at "BRAHM.UNICEF_BDD.dbo.ORF_VER"

--Creación de la vista ORFANATORIOS
create view ORFANATORIOS
as
(select * from ORF_TAB)
union
(select * from ORF_TLAX)
union
(select * from ORF_VER)

--Creación de procedimiento para insertar datos en la vista ORFANATORIOS
create procedure inserta_orfanatorios (@ID_ORFANATORIO int,@ID_ESTADO int,@NOMBRE_ORFANATORIO varchar(50),@DOM_ORFANATORIO varchar(50))
as
begin
declare @NOMBRE_ESTADO varchar(50)
set @NOMBRE_ESTADO = (select NOMBRE_ESTADO from ESTADOS where ID_ESTADO=@ID_ESTADO)

IF (UPPER(@NOMBRE_ESTADO)=UPPER('VERACRUZ')) 
	INSERT INTO ORF_VER(ID_ORFANATORIO,ID_ESTADO,NOMBRE_ORFANATORIO,DOM_ORFANATORIO) VALUES(@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)
	else
    IF (UPPER(@NOMBRE_ESTADO)=UPPER('TLAXCALA'))
        INSERT INTO ORF_TLAX(ID_ORFANATORIO,ID_ESTADO,NOMBRE_ORFANATORIO,DOM_ORFANATORIO) VALUES(@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)
    else
        IF (UPPER(@NOMBRE_ESTADO)=UPPER('TABASCO'))
           INSERT INTO ORF_TAB(ID_ORFANATORIO,ID_ESTADO,NOMBRE_ORFANATORIO,DOM_ORFANATORIO) VALUES(@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)               
end;

--Creación de trigger para insertar datos en la vista ORFANATORIOS
create trigger trgr_orfanatorios on ORFANATORIOS
instead of insert as
declare @ID_ORFANATORIO int
declare @ID_ESTADO int
declare @NOMBRE_ORFANATORIO varchar(50)
declare @DOM_ORFANATORIO CHAR(1)
begin
select @ID_ORFATANTORIO=ID_ORFANATORIO,@ID_ESTADO=ID_ESTADO,@NOMBRE_ORFANATORIO=NOMBRE_ORFANATORIO,@DOM_ORFANATORIO=DOM_ORFANATORIO from inserted
exec inserta_orfanatorios @ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO
end

--Borrar orfanatorios
create procedure borra_orfanatorios (@ID_ORFANATORIO int,@ID_ESTADO int,@NOMBRE_ORFANATORIO varchar(50),@DOM_ORFANATORIO varchar(50))
as
begin
declare @NOMBRE_ESTADO varchar(50)
set @NOMBRE_ESTADO = (select NOMBRE_ESTADO from ESTADOS where ID_ESTADO=@ID_ESTADO)

IF (UPPER(@NOMBRE_ESTADO)=UPPER('VERACRUZ')) 
	delete from ORF_VER where ID_ORFANATORIO=@ID_ORFANATORIO and ID_ESTADO=@ID_ESTADO
	else
    IF (UPPER(@NOMBRE_ESTADO)=UPPER('TLAXCALA'))
        delete from ORF_TLAX where ID_ORFANATORIO=@ID_ORFANATORIO and ID_ESTADO=@ID_ESTADO
    else
        IF (UPPER(@NOMBRE_ESTADO)=UPPER('TABASCO'))
           delete from ORF_TAB where ID_ORFANATORIO=@ID_ORFANATORIO and ID_ESTADO=@ID_ESTADO
end;

create trigger trgr_borra_orfanatorios on ORFANATORIOS
instead of delete as
declare @ID_ORFANATORIO int
declare @ID_ESTADO int
declare @NOMBRE_ORFANATORIO varchar(50)
declare @DOM_ORFANATORIO CHAR(1)
begin
select @ID_ORFATANTORIO=ID_ORFANATORIO,@ID_ESTADO=ID_ESTADO,@NOMBRE_ORFANATORIO=NOMBRE_ORFANATORIO,@DOM_ORFANATORIO=DOM_ORFANATORIO from deleted
exec borra_orfanatorios @ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO
end




--Creación de las tablas que componen la vista DIRECTORES
create table DIRECTORES_TLAX(
ID_DIRECTOR int,
ID_ORFANATORIO int,
FECHA_NACIMIENTO date,
NOMBRE_DIRECTOR varchar(50)
)

create table DIRECTORES_TAB(
ID_DIRECTOR int,
ID_ORFANATORIO int,
FECHA_NACIMIENTO date,
NOMBRE_DIRECTOR varchar(50)
)

--Llaves primarias, foraneas y reglas de negocio
alter table DIRECTORES_TAB add primary key (ID_DIRECTOR)
alter table DIRECTORES_TLAX add primary key (ID_DIRECTOR)

alter table DIRECTORES_TAB add foreign key (ID_ORFANATORIO) referenceS ORF_TAB (ID_ORFANATORIO)
alter table DIRECTORES_TLAX add foreign key (ID_ORFANATORIO) referenceS ORF_TLAX (ID_ORFANATORIO)

--Creación de procedimientos para insertar datos
CREATE PROCEDURE in_directores_tab
@ID_DIRECTOR int,
@ID_ORFANATORIO int,
@FECHA_NACIMIENTO date,
@NOMBRE _DIRECTOR varchar(50)
AS
insert into DIRECTORES_SON
values (@ID_DIRECTOR,@ID_ORFANATORIO,@FECHA_NACIMIENTO,@NOMBRE_DIRECTOR)

CREATE PROCEDURE in_directores_tlax
@ID_DIRECTOR int,
@ID_ORFANATORIO int,
@FECHA_NACIMIENTO date,
@NOMBRE _DIRECTOR varchar(50)
AS
insert into DIRECTORES_SON
values (@ID_DIRECTOR,@ID_ORFANATORIO,@FECHA_NACIMIENTO,@NOMBRE_DIRECTOR)

--Creación de procedimientos remotos  para la vista DIRECTORES
create existing table in_directores_ver
(
ID_DIRECTOR int,
ID_ORFANATORIO int,
FECHA_NACIMIENTO date,
NOMBRE_DIRECTOR varchar(50)
)
external procedure at "BRAHM.UNICEF_BDD.dbo.in_directores_ver"

--Creación de las proxytables para la vista DIRECTORES
create existing table DIRECTORES_VER
(
ID_DIRECTOR int,
ID_ORFANATORIO int,
FECHA_NACIMIENTO date,
NOMBRE_DIRECTOR varchar(50)
)
external table at "BRAHM.UNICEF_BDD.dbo.DIRECTORES_VER"

--CREACION DE LA VISTA DIRECTORES

create view DIRECTORES
as
(
select * from DIRECTORES_VER
union
select * from DIRECTORES_TAB
union
select * from DIRECTORES_TLAX
)






--Creación de las tablas que componen la vista HUERFANOS
create table HUER_TAB(
ID_HUERFANO int,
NOMBRE_HUERFANO varchar(50),
SEXO_HUERFANO char(1),
ID_ORFANATORIO int,
ADOPTADO bit
)

create table HUER_TLAX(
ID_HUERFANO int,
NOMBRE_HUERFANO varchar(50),
SEXO_HUERFANO char(1),
ID_ORFANATORIO int,
ADOPTADO bit
)

--Llaves primarias, foraneas y reglas de negocio
alter table HUER_TAB add primary key (ID_HUERFANO)
alter table HUER_TLAX add primary key (ID_HUERFANO)

alter table HUER_TAB add foreign key (ID_ORFANATORIO) references ORF_TAB(ID_ORFANATORIO)
alter table HUER_TLAX add foreign key (ID_ESTADO) references ORF_TLAX(ID_ORFANATORIO)

--Creación de procedimientos almacenados
CREATE PROCEDURE in_huertab
@ID_HUERFANO int,
@NOMBRE_HUERFANO varchar(50),
@SEXO_HUERFANO CHAR(1),
@ID_ORFANATORIO INT,
@ADOPTADO BIT
AS
insert into HUER_TAB
values (@ID_HUERFANO,@NOMBRE_HUERFANO,@SEXO_HUERFANO,@ID_ORFANATORIO,@ADOPTADO)


CREATE PROCEDURE in_huertlax
@ID_HUERFANO int,
@NOMBRE_HUERFANO varchar(50),
@SEXO_HUERFANO CHAR(1),
@ID_ORFANATORIO INT,
@ADOPTADO BIT
AS
insert into HUER_TLAX
values (@ID_HUERFANO,@NOMBRE_HUERFANO,@SEXO_HUERFANO,@ID_ORFANATORIO,@ADOPTADO)


--Procedimiento remoto
create existing table in_huerver
(
ID_HUERFANO int,
NOMBRE_HUERFANO varchar(50),
SEXO_HUERFANO CHAR(1),
ID_ORFANATORIO INT,
ADOPTADO BIT
)
external procedure at "BRAHM.UNICEF_BDD.dbo.in_huerver"

--Creación de proxy tables
create existing table HUER_VER
(
ID_HUERFANO int,
NOMBRE_HUERFANO varchar(50),
SEXO_HUERFANO CHAR(1),
ID_ORFANATORIO INT,
ADOPTADO BIT
)external table at "BRAHM.UNICEF_BDD.dbo.HUER_VER"

--Creación de la vista HUERFANOS
create view HUERFANOS
as
(select * from HUER_VER)
union
(select * from HUER_TAM)
union
(select * from HUER_TLAX)

--Creación de procedimiento para insertar en la vista HUERFANOS
create procedure inserta_huerfano(@ID_HUERFANO int,@NOMBRE_HUERFANO varchar(50), @SEXO_HUERFANO char(1), @ID_ORFANATORIO int, @ADOPTADO bit)
as
begin
declare @NOMBRE_ESTADO varchar(30)
set @NOMBRE_ESTADO = (select E.NOMBRE_ESTADO from ESTADO E, ORFANATORIO F where F.ID_ORFANATORIO=@ORFANATORIO and E.ID_ESTADO=F.ID_ESTADO )
IF (UPPER(@NOMBRE_ESTADO)=UPPER('VERACRUZ')) 
INSERT INTO HUER_VER(ID_HUERFANO, NOMBRE_HUERFANO, SEXO_HUERFANO, ID_ORFANATORIO, ADOPTADO) VALUES(@ID_HUERFANO,@NOMBRE_HUERFANO, @SEXO_HUERFANO, @ID_ESTADO, @ADOPTADO)
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TLAXCALA')) 
INSERT INTO HUER_TLAX(ID_HUERFANO, NOMBRE_HUERFANO, SEXO_HUERFANO, ID_ORFANATORIO, ADOPTADO) VALUES(@ID_HUERFANO,@NOMBRE_HUERFANO, @SEXO_HUERFANO, @ID_ESTADO, @ADOPTADO) 
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TABASCO')) 
INSERT INTO HUER_TAB(ID_HUERFANO, NOMBRE_HUERFANO, SEXO_HUERFANO, ID_ORFANATORIO, ADOPTADO) VALUES(@ID_HUERFANO,@NOMBRE_HUERFANO, @SEXO_HUERFANO, @ID_ESTADO, @ADOPTADO)
end;


--Creación del trigger para insertar datos en la vista HUERFANOS
create trigger trgr_huerfanos on HUERFANOS
instead of insert as
declare @ID_HUERFANO int
declare @NOMBRE_HUERFANO varchar(50)
declare @SEXO_HUERFANO CHAR(1)
declare @ID_ORFANATORIO INT
declare @ADOPTADO bit
begin
select @ID_HUERFANO=ID_HUERFANO,@NOMBRE_HUERFANO=NOMBRE_HUERFANO, @SEXO_HUERFANO=SEXO_HUERFANO, @ID_ORFANATORIO=ID_ORFANATORIO, @ADOPTADO=ADOPTADO
from inserted
exec inserta_huerfano @ID_HUERFANO, @NOMBRE_HUERFANO, @SEXO_HUERFANO,@ID_ORFANATORIO,@ADOPTADO
end






--Creación de procedimientos remotos para la vista ENFERMEDADES
create existing table in_enfermedades
(
ID_ENFERMEDAD int,
NOMBRE_ENFERMEDAD varchar(50),
INDICE_MORTALIDAD int
)
external procedure at "BRAHM.UNICEF_BDD.dbo.in_enfermedades"
describe in_enfermedades

--Creación de la proxytable para la vista ENFERMEDADES
create existing table ENFERMEDADES
(
ID_ENFERMEDAD int,
NOMBRE_ENFERMEDAD varchar(50),
INDICE_MORTALIDAD int
)
external table at "BRAHM.UNICEF_BDD.dbo.ENFERMEDADES"

--Creación de procedimientos almacenados
CREATE PROCEDURE in_enfermedades
@ID_ENFERMEDAD int,
@NOMBRE_ENFERMEDAD varchar(50),
@INDICE_MORTALIDAD int
AS
insert into ENFERMEDADES
values (@ID_ENFERMEDAD,@NOMBRE_ENFERMEDAD,@INDICE_MORTALIDAD)

--Inserta enfermedades
create procedure inserta_enfermedades (@ID_ENFERMEDAD int,@NOMBRE_ENFERMEDAD varchar(50),@INDICE_MORTALIDAD int)
as
begin
	insert into ENFERMEDADES(ID_ENFERMEDAD, NOMBRE_ENFERMEDAD, INDICE_MORTALIDAD) VALUES(@ID_ENFERMEDAD,@NOMBRE_ENFERMEDAD,@INDICE_MORTALIDAD) 
end;





--CREACION DE LAS TABLAS ADOPTADOS
create table ADOPTADOS_TAB(
ID_HUERFANO int,
ID_HABITANTE int
)

create table ADOPTADOS_TLAX(
ID_HABITANTE int,
ID_HUERFANO int
)

--Llaves primarias, foraneas y reglas de negocio
alter table ADOPTADOS_TAB add primary key (ID_HABITANTE,ID_HUERFANO)
alter table ADOPTADOS_TLAX add primary key (ID_HABITANTE,ID_HUERFANO)

alter table ADOPTADOS_TAB add foreign key (ID_HABITANTE) references HAB_TAS (ID_HABITANTE)
alter table ADOPTADOS_TLAX add foreign key (ID_HABITANTE) references HAB_TLAX(ID_HABITANTE)

alter table ADOPTADOS_TAB add foreign key (ID_HUERFANO) references HUER_TAB (ID_HUERFANO)
alter table ADOPTADOS_TLAX add foreign key (ID_HUERFANO) references HUER_TLAX (ID_HUERFANO)

--Creación de procedimientos para insertar datos
CREATE PROCEDURE in_adoptado_tab
@ID_HABITANTE int,
@ID_HUERFANO int
AS
insert into ADOPTADOS_TAB
values (@ID_HABITANTE,@ID_HUERFANO)

CREATE PROCEDURE in_adoptado_tlax
@ID_HABITANTE int,
@ID_HUERFANO int
AS
insert into ADOPTADOS_TLAX
values (@ID_HABITANTE,@ID_HUERFANO)

--Creación de procedimientos remotos  para la vista ADOPTADOS
create existing table in_adoptado_ver
(
ID_HABITANTE int,
ID_HUERFANO int
)
external procedure at "BRAHM.UNICEF_BDD.dbo.in_adoptado_ver"

--Creación de las proxytables para la vista ADOPTADOS
create existing table ADOPTADOS_VER
(
ID_HABITANTE int,
ID_HUERFANO int
)
external table at "BRAHM.UNICEF_BDD.dbo.ADOPTADOS_VER"

--CREACION DE LA VISTA ADOPTADOS

create view ADOPTADOS 
as
(
select * from ADOPTADOS_VER
union
select * from ADOPTADOS_TAB
union
select * from ADOPTADOS_TLAX
)


--Creación de las tablas que conforman la vista HABITANTES
create table HAB_TAB(
ID_HABITANTE int,
NOMBRE_HABITANTE varchar(50),
SEXO_HABITANTE char(1),
DOMICILIO_HABITANTE VARCHAR(50),
ID_ESTADO int
)

create table HAB_TLAX(
ID_HABITANTE int,
NOMBRE_HABITANTE varchar(50),
SEXO_HABITANTE char(1),
DOMICILIO_HABITANTE VARCHAR(50),
ID_ESTADO int
)

--Creación de llaves primarias, foraneas y constraints
alter table HAB_TAB add primary key (ID_HABITANTE)
alter table HAB_TLAX add primary key (ID_HABITANTE)

alter table HAB_TAB add foreign key (ID_ESTADO) references ESTADO_TAB(ID_ESTADO)
alter table HAB_TLAX add foreign key (ID_ESTADO) references ESTADO_TLAX(ID_ESTADO)

--Creación de procedimientos almacenados
CREATE PROCEDURE in_habtab
@ID_HABITANTE int,
@NOMBRE_HABITANTE varchar(50),
@SEXO_HABITANTE CHAR(1),
@DOMICILIO_HABITANTE VARCHAR(50),
@ID_ESTADO INT
AS
insert into HAB_TAB
values (@ID_HABITANTE,@NOMBRE_HABITANTE,@SEXO_HABITANTE,@DOMICILIO_HABITANTE,@ID_ESTADO)

CREATE PROCEDURE in_habtlax
@ID_HABITANTE int,
@NOMBRE_HABITANTE varchar(50),
@SEXO_HABITANTE CHAR(1),
@DOMICILIO_HABITANTE VARCHAR(50),
@ID_ESTADO INT
AS
insert into HAB_TLAX
values (@ID_HABITANTE,@NOMBRE_HABITANTE,@SEXO_HABITANTE,@DOMICILIO_HABITANTE,@ID_ESTADO)

--Creación de procedimientos remotos
create existing table in_habver
(
ID_HABITANTE int,
NOMBRE_HABITANTE varchar(50),
SEXO_HABITANTE CHAR(1),
DOMICILIO_HABITANTE VARCHAR(50),
ID_ESTADO INT
)
external procedure at "BRAHM.UNICEF_BDD.dbo.in_habver"

--Creación de proxy tables
create existing table HAB_VER
(
ID_HABITANTE int,
NOMBRE_HABITANTE varchar(50),
SEXO_HABITANTE CHAR(1),
DOMICILIO_HABITANTE VARCHAR(50),
ID_ESTADO INT
)external table at "BRAHM.UNICEF_BDD.dbo.HAB_VER"

--Creación de la vista HABITANTES
create view HABITANTES
as
(select * from HAB_VER)
union
(select * from HAB_TAB)
union
(select * from HAB_TLAX)

--Creación de procedimiento para insertar datos en la vista HABITANTES
create procedure inserta_habitante(@ID_HABITANTE int,@NOMBRE_HABITANTE varchar(50), @SEXO_HABITANTE char(1), @DOMICILIO_HABITANTE varchar(50), @ID_ESTADO int)
as
begin
declare @NOMBRE_ESTADO varchar(30)
set @NOMBRE_ESTADO = (select NOMBRE_ESTADO from ESTADO where ID_ESTADO=@ID_ESTADO)
IF (UPPER(@NOMBRE_ESTADO)=UPPER('VERACRUZ')) 
INSERT INTO HAB_VER(ID_HABITANTE, NOMBRE_HABITANTE, SEXO_HABITANTE, DOMICILIO_HABITANTE, ID_ESTADO) VALUES(@ID_HABITANTE,@NOMBRE_HABITANTE, @SEXO_HABITANTE, @DOMICILIO_HABITANTE, @ID_ESTADO)
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TLAXCALA')) 
INSERT INTO HAB_TLAX(ID_HABITANTE, NOMBRE_HABITANTE, SEXO_HABITANTE, DOMICILIO_HABITANTE, ID_ESTADO) VALUES(@ID_HABITANTE,@NOMBRE_HABITANTE, @SEXO_HABITANTE, @DOMICILIO_HABITANTE, @ID_ESTADO)
else 
IF (UPPER(@NOMBRE_ESTADO)=UPPER('TABASCO')) 
INSERT INTO HAB_TAB(ID_HABITANTE, NOMBRE_HABITANTE, SEXO_HABITANTE, DOMICILIO_HABITANTE, ID_ESTADO) VALUES(@ID_HABITANTE,@NOMBRE_HABITANTE, @SEXO_HABITANTE, @DOMICILIO_HABITANTE, @ID_ESTADO)
end;

--Creación del trigger para insertar datos en la vista HABITANTES
create trigger trgr_habitantes on HABITANTES
instead of insert as
declare @ID_HABITANTE int
declare @NOMBRE_HABITANTE varchar(50)
declare @SEXO_HABITANTE CHAR(1)
declare @DOMICILIO_HABITANTE VARCHAR(50)
declare @ID_ESTADO INT
begin
select @ID_HABITANTE=ID_HABITANTE,@NOMBRE_HABITANTE=NOMBRE_HABITANTE, @SEXO_HABITANTE=SEXO_HABITANTE, @DOMICILIO_HABITANTE=DOMICILIO_HABITANTE, @ID_ESTADO=ID_ESTADO
from inserted
exec inserta_habitante @ID_HABITANTE, @NOMBRE_HABITANTE, @SEXO_HABITANTE, @DOMICILIO_HABITANTE,@ID_ESTADO 
end







--Creación de las tablas que componen la vista PADECE_ENFERMEDADES
create table PADECEHUERTAB(
ID_ENFERMEDAD int,
ID_HUERFANO int,
DIAS_ENFERMEDAD int
)

create table PADECEHUERTLAX(
ID_ENFERMEDAD int,
ID_HUERFANO int,
DIAS_ENFERMEDAD int
)
--Llaves primarias y foráneas
alter table PADECEHUERTAB add primary key(ID_ENFERMEDAD,ID_HUERFANO)
alter table PADECEHUERTLAX add primary key(ID_ENFERMEDAD,ID_HUERFANO)

alter table PADECEHUERTAB add foreign key(ID_ENFERMEDAD) references ENFERMEDADES(ID_ENFERMEDAD)
alter table PADECEHUERTAB add foreign key(ID_HUERFANO) references HUER_TAB(ID_HUERFANO)

alter table PADECEHUERTLAX add foreign key(ID_ENFERMEDAD) references ENFERMEDADES(ID_ENFERMEDAD)
alter table PADECEHUERTLAX add foreign key(ID_HUERFANO) references HUER_TLAX(ID_HUERFANO)

--Creación de procedimientos almacenados para cada fragmento de la vista PADECE_ENFERMEDADES
CREATE PROCEDURE in_padecehuertab
@ID_ENFERMEDAD int,
@ID_HUERFANO int,
@DIAS_ENFERMEDAD int
AS
insert into PADECEHUERTAB
values (@ID_ENFERMEDAD,@ID_HUERFANO,@DIAS_ENFERMEDAD)

CREATE PROCEDURE in_padecehuertlax
@ID_ENFERMEDAD int,
@ID_HUERFANO int,
@DIAS_ENFERMEDAD int
AS
insert into PADECEHUERTLAX
values (@ID_ENFERMEDAD,@ID_HUERFANO,@DIAS_ENFERMEDAD)

--Creación de procedimientos remotos para la vista PADECE_ENFERMEDADES
create existing table in_padecehuerver
(
ID_ENFERMEDAD int,
ID_HUERFANO int,
DIAS_ENFERMEDAD int
)
external procedure at "BRAHM.UNICEF_BDD.dbo.in_padecehuerver"

--Creación de las proxytables para la vista PADECE_ENFERMEDADES
create existing table PADECEHUERVER
(
ID_ENFERMEDAD int,
ID_HUERFANO int,
DIAS_ENFERMEDAD int
)
external table at "BRAHM.UNICEF_BDD.dbo.PADECEHUERVER"

--Creación de vista en PADECE_ENFERMEDADES
create view PADECE_ENFERMEDADES
as
(select * from PADECEHUERTAB)
union
(select * from PADECEHUERTLAX)
union
(select * from PADECEHUERVER)


create procedure inserta_padece_enfermedades (@ID_ENFERMEDAD int,@ID_HUERFANO int,@DIAS_ENFERMEDAD int)
as
begin
declare @NOMBRE_ESTADO varchar(50)

set @NOMBRE_ESTADO = (select NOMBRE_ESTADO from ESTADOS where ID_ESTADO=@ID_ESTADO)

IF (UPPER(@NOMBRE_ESTADO)=UPPER('VERACRUZ')) 
	INSERT INTO ORF_VER(ID_ORFANATORIO,ID_ESTADO,NOMBRE_ORFANATORIO,DOM_ORFANATORIO) VALUES(@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)
	else
    IF (UPPER(@NOMBRE_ESTADO)=UPPER('TLAXCALA'))
        INSERT INTO ORF_TLAX(ID_ORFANATORIO,ID_ESTADO,NOMBRE_ORFANATORIO,DOM_ORFANATORIO) VALUES(@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)
    else
        IF (UPPER(@NOMBRE_ESTADO)=UPPER('TABASCO'))
           INSERT INTO ORF_TAB(ID_ORFANATORIO,ID_ESTADO,NOMBRE_ORFANATORIO,DOM_ORFANATORIO) VALUES(@ID_ORFANATORIO,@ID_ESTADO,@NOMBRE_ORFANATORIO,@DOM_ORFANATORIO)
                 
end;
